草庐IT

c++ - C 和 C++ 中 union 的用途

全部标签

c++ - OpenCV 3.0 中 ACCESS_FAST 的用途是什么?

要从OpenCV3.0中的cv::Mat获取cv::UMat,您可以使用此函数:UMatcv::Mat::getUMat(intaccessFlags,UMatUsageFlagsusageFlags=USAGE_DEFAULT)变量accessFlags是一个枚举类型,它采用以下值之一:enum{ACCESS_READ=1使用值ACCESS_FAST的目的是什么? 最佳答案 ACCESS_FAST仅用于allocate功能usememcpy或createatemporarymat如果ACCESS_FAST未指定。。这是addedt

c++ - 为什么由 const 限定的变体成员组成的 union 会导致没有默认的默认构造函数?

N4567的标准草案建议将默认的默认构造函数定义为删除,如果——根据12.1,第4段:Xisaunionandallofitsvariantmembersareofconst-qualifiedtype(orarraythereof),换句话说,这相当于说,如果其变体成员之一不是const限定的,则上述规则不适用。我的问题是:让它的所有成员都具有const限定有什么特别之处(与至少其中一个成员没有const限定的相反情况相比),从什么角度来看它是密切相关的到默认的默认构造函数? 最佳答案 假设您有一个只有const成员的union:

c++ - STL 无序容器的局部迭代器有哪些用途?

在C++标准§23.2.7无序关联容器[unord.req]中表91描述了STL无序关联容器必须满足的附加要求。在此表中,标准规定STL无序容器(即unordered_set、unordered_map、unordered_multiset和unordered_multimap)必须作为成员类型提供local_iterator和const_local_iterator.local_iterator是一个迭代器类型,其类别、值、差异、指针和引用类型与无序容器的iterator相同。此迭代器可用于迭代单个存储桶但不能跨存储桶。const_local_iterator是一个迭代器类型,其类别

C++:字符串和 union Bison

我正在用flex和bison构建一个编译器。问题是使用char*会带来很多问题,所以我正在尝试将所有内容迁移到string。剩下的唯一问题是有一个带有字符串的union。我知道这不是一个标准,但是使用指针应该没有问题。相关代码:#includeusingnamespacestd;//--SYMBOLSEMANTICVALUES-----------------------------%union{structlc{string*code;string*start;string*verdadero;string*falso;string*next;}code;}奇怪的是我收到的错误:fi

c++ - 为什么我不能创建一个包含 vec3 对象的 union ?

我似乎无法创建一个成员是或包含glm::vec3的union对象(表示坐标的对象,在本例中包含3个float)。(sourcecodeforglm::vec)在以下代码中使用:structEvent{enumType{tRaw,tAction,tCursor,}type;union{SDL_Eventraw;struct{uint16actionID;boolreleased;}action;struct{glm::vec3prevPos;glm::vec3pos;}cursor;//offendingobject,compilesifthisisremoved}data;};Visu

c++ - void(param); 的意义/用途是什么?在功能开始时?

我刚刚浏览了Yahoo'sTraficServer的源代码它是用C++编写的。在几乎所有方法中(来自模块之一),他们对函数接收的每个参数执行void(param)。(例如下面)谁能解释一下这是干什么用的?intsome_method_name(caddr_taddr,size_tlen,caddr_tend,intflags){(void)end;(void)addr;(void)len;(void)end;(void)flags;..........}附言:有关实际源代码,请参阅方法来自http://github.com/apache/trafficserver/blob/trunk

c++ - 错误 : copy assignment operator not allowed in union

当出现以下错误时,我正在编译下面的代码。我找不到原因。typedefunion{struct{constintj;}tag;}X;intmain(){return0;}error:member`::``::tagwithcopyassignmentoperatornotallowedinunion虽然这段代码使用gcc编译罚款。仅使用g++时出错。 最佳答案 为了拥有某个类类型T的union成员,T的特殊成员函数(默认构造函数、复制构造函数、复制赋值运算符、和析构函数)必须是微不足道的。也就是说,它们必须是由编译器隐式声明和定义的。

c++ - 我怎样才能防止无名的结构\union ?

我正在构建一个类,该类的矩阵数据有union,但是,只有在没有结构\union的名称时,我才能编译它。但是,如果警告级别更高(visualstudio上有四个),我会发出警告warningC4201:nonstandardextensionused:namelessstruct/union我调查了一下,我似乎无法找到防止这种情况发生的方法。无论如何,我所知道的可能会导致与一个或另一个的声明相关的不同编译器错误。我怎样才能避免收到此警告并使其符合标准,而不仅仅是禁用警告。union{struct{F32_11,_12,_13,_14;F32_21,_22,_23,_24;F32_31,_

C++: union 析构函数

union是一种用户定义的数据或类类型,在任何给定时间,它只包含其成员列表中的一个对象。假设需要动态分配所有可能的候选成员。对于例如。//UnionDestructor#includeusingnamespacestd;unionPerson{private:char*szName;char*szJobTitle;public:Person():szName(nullptr),szJobTitle(nullptr){}Person(conststring&strName,conststring&strJob){szName=newchar[strName.size()];strcpy(

c++ - std::map 的用途是什么?

谁能解释一下我从这个使用std::map的简单程序中得到的输出。请注意,我将p插入到map中,但没有插入q但它说它找到了它们,而且还说map中只有1个元素!#include#includestructscreenPoint{floatx=0,y=0;screenPoint(floatx_,floaty_):x{x_},y{y_}{}};booloperatorpositions;intmain(intargc,constchar*argv[]){autop=screenPoint(1,2);autoq=screenPoint(2,1);positions.emplace(p,3);au